package com.crcode.crm.service.role;

import java.util.List;
import java.util.Map;

import com.crcode.crm.bean.role.RoleBean;
import com.crcode.crm.bean.user.UserBean;
import com.crcode.crm.service.CommonService;
import com.crcode.crm.utils.PageVo;
import com.crcode.crm.utils.ResultPageUtil;
import com.crcode.crm.utils.ResultUtil;

/**
 * 角色管理业务逻辑接口
 * @author lxw
 * @date 2018年8月27日 下午3:11:51
 */
public interface RoleService extends CommonService<RoleBean, Integer> {
	
	/**
	 * 分页加载
	 * @author lxw  
	 * @date 2018年8月27日 下午3:15:26
	 * @param role
	 * @param vo
	 * @return
	 */
	public ResultPageUtil findAll(RoleBean role,PageVo vo);
	
	/**
	 * 根据uuid查询
	 * @author lxw
	 * @date 2019年1月22日
	 * @param uuid
	 * @return
	 */
	public RoleBean getEntityByUuid(String uuid);
	
	/**
	 * 单一批量删除角色
	 * @author lxw
	 * @date 2019年1月22日
	 * @param uuids
	 * @return
	 */
	public ResultUtil deleteRoleByUuids(String uuids);
	
	/**
	 * 根据角色查找权限
	 * @author lxw
	 * @date 2019年1月22日
	 * @param uuid
	 * @return
	 */
	public Map<String, Object> findRolePowerByUuid(String uuid);
	
	/**
	 * 分配角色业务权限
	 * @author lxw
	 * @date 2019年1月22日
	 * @param roleUuid
	 * @param moduleUuids
	 * @param userUuids
	 * @return
	 */
	public ResultUtil changePower(String roleUuid, String moduleUuids, String userUuids);
	
	/**
	 * 登陆成功,加载菜单
	 * @author lxw
	 * @date 2019年1月22日
	 * @param user
	 * @return
	 */
	public List<Map<String, Object>> findPowerByUser(UserBean user);
	
	/**
	 * 角色新增保存
	 * @author lxw
	 * @date 2019年2月15日
	 * @param role
	 * @param user
	 * @return
	 */
	public ResultUtil addSaveRole(RoleBean role,UserBean user);
	
	/**
	 * 角色编辑保存
	 * @author lxw  
	 * @date 2018年8月28日 上午10:28:07
	 * @param role
	 * @return
	 */
	public ResultUtil editSaveRole(RoleBean role);
	
	/**
	 * 根据是否可用查询
	 * @author lxw 
	 * @date 2018年9月17日 下午5:03:37
	 * @param isUse  1、可以；0不可以。默认1
	 * @return
	 */
	public List<RoleBean> getRoleByIsUse(Integer isUse);
	
	/**
	 * 根据序号集合查询角色集合
	 * @author lxw
	 * @date 2018年9月18日 上午10:43:47
	 * @param ids
	 * @return
	 */
	public List<RoleBean> getRolesByUuids(List<String> uuids);
	
	/**
	 * 根据序号集删除
	 * @author lxw
	 * @date 2018年9月20日 上午11:20:38
	 * @param ids
	 * @return
	 */
	public boolean deleteByRoleUuidsIn(List<String> uuids);

	/**
	 * 改变角色是否可用
	 * @author lxw
	 * @date 2018年9月20日 下午1:58:30
	 * @param ids
	 * @param isUse
	 * @return
	 */
	public ResultUtil changeRoleIsUse(String uuids,Integer isUse);
	
}
